//
//  HMBaseTableViewController.swift
//  新浪微博-4-8v1.0
//
//  Created by 黎永锋 on 16/4/9.
//  Copyright © 2016年 黎永锋. All rights reserved.
//

import UIKit

class HMBaseTableViewController: UITableViewController {

    //用户是否登录
    var userLogin = false
    
    // 是控制器加载view的时候会调用,如果直接调用super.loadView(),后续该怎么加载就会怎么加载sb/xib,在loadView里面给view设置值后,那么就不会再去sb/xib中加载view
    
    override func loadView() {
        userLogin ? super.loadView() : setupVisitorView()
    }
    
    // MARK: -按钮点击事件
    @objc private func didClickRegister(){
    
        print("didClickRegister")
    }
    
    @objc private func didClickLogin(){

        print("didClickLogin")
    
    }
    
//    // MARK: -代理方法
//    // 6. 需要实现协议里面的方法,如果不实现非 optional的方法还是会报错
//    func visitorViewDidClickRegisterButton(visitorView visitorView: UIView) {
//        print("visitorViewDidClickRegisterButton")
//    }
//    
//    func visitorViewDidClickLoginButton(visitorView visitorView: UIView) {
//        print("visitorViewDidClickLoginButton")
//    }
    
    
    // MARK: -私有方法
    //设置访客视图
    private func setupVisitorView(){
    
        view = visitorView
        
        //5. 设置访客视图的代理,当设置代理后,没有实现这个协议会报错
        visitorView.delegate = self
        
        //设置访客视图内容,4个子控制器都会走这里,self具体是什么类型看创建的子类: 多态
        if self is HMHomeTableViewController{
        
            visitorView.startRotation()
            
        }else if self is HMMessageTableViewController{
        
            visitorView.setupVisitorViewInfo("visitordiscover_image_message", message: "登录后，别人评论你的微博，发给你的消息，都会在这里收到通知")
            
        }else if self is HMDiscoverTableViewController{
        
            visitorView.setupVisitorViewInfo("visitordiscover_image_message", message: "登录后，最新、最热微博尽在掌握，不再会与实事潮流擦肩而过")
            
        }else if self is HMProfileTableViewController{
        
            visitorView.setupVisitorViewInfo("visitordiscover_image_profile", message:  "登录后，你的微博、相册、个人资料会显示在这里，展示给别人")
        }
        
        // 设置导航栏按钮
        navigationItem.leftBarButtonItem = UIBarButtonItem(title: "注册", style: UIBarButtonItemStyle.Plain, target: self, action: Selector("didClickRegister"))
        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "登录", style: UIBarButtonItemStyle.Plain, target: self, action: Selector("didClickLogin"))
    }
    
    //MARK: -懒加载
    //给别人调用的时候尽量简单
    //高内聚低耦合
    private lazy var visitorView: HMVisitorView = HMVisitorView()
}

//扩展和OC的分类很像,只能扩展方法,可以让对象实现协议,方便代码管理
extension HMBaseTableViewController:HMVisitorViewDelegate{

    // MARK: -代理方法
    // 6. 需要实现协议里面的方法,如果不实现非 optional的方法还是会报错
    func visitorViewDidClickRegisterButton(visitorView visitorView: UIView) {
        print("visitorViewDidClickRegisterButton")
        
    }
    
    func visitorViewDidClickLoginButton(visitorView visitorView: UIView) {
//        print("visitorViewDidClickLoginButton")
        
        //弹出Oauth登录界面
        let oauthVC = HMOauthViewController()
        
        //包装一个导航控制器
        let nav = UINavigationController(rootViewController: oauthVC)
        
        presentViewController(nav, animated: true, completion: nil)
    }

}
